package main

import (
	"context"
	"fmt"
	"google.golang.org/grpc"
	pb "grpc-demo/complex/proto"
	"io"
	"log"
)

// 在函数外定义grpcClient，被2个函数调用
var grpcClient pb.StreamServerClient

// 在客户端创建listValue函数调用服务端的ListValue
func listValue() {
	req := pb.SimpleRequest{
		Data: "stream grpc server ",
	}
	stream, err := grpcClient.ListValue(context.Background(), &req)
	if err != nil {
		log.Fatal(err)
	}

	for {
		recv, err := stream.Recv()
		if err == io.EOF {
			break
		}
		if err != nil {
			return
		}
		fmt.Println(recv.StreamValue)
	}
}

func main() {
	// 连接服务器
	conn, err := grpc.Dial(":50051", grpc.WithInsecure())
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close()

	// 建立grpc连接
	grpcClient = pb.NewStreamServerClient(conn)

	listValue()
}
